<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Usuarios
 *
 * @author root
 */

namespace RPPrincipal\UsuariosBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use RPPrincipal\UsuariosBundle\Entity\Usuarios;

class Usuario extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface {

    public function getOrder() {
        return 40;
    }

    private $container;

    public function setContainer(ContainerInterface $container = null) {
        $this->container = $container;
    }

    public function load(ObjectManager $manager) {
        $_usuarios = array(
            array('usuario' => 'usuario1', 'password' => '123456'),
                //array('nombre' => 'Barcelona', 'slug' => 'barcelona'),
// ...
        );
        foreach ($_usuarios as $usuario) {
            $entidad = new Usuarios();
            $entidad->setUsuario($usuario['usuario']);
            $entidad->setSalt(md5(time()));
            $encoder = new \Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder('sha512', true, 10);
            $password = $encoder->encodePassword($entidad->getPassword(), $entidad->getSalt());
//            $entidad->setPassword($password);
            $entidad->setPassword($usuario['password']);
            $entidad->setEstado("TRUE");
            $entidad->setFechaAlta(new \DateTime("now"));
            $entidad->setNombre("usuario1");
            $entidad->setApellido("usuario1");
//            $entidad->setRoles(1);
//            $entidad->addRole(1);
            $manager->persist($entidad);
        }


//        for ($i = 1; $i <= 10; $i++) {
//            $usuario = new Usuario();
//
//            $usuario->setNombre($this->getNombre());
//            $usuario->setApellido($this->getApellidos());
//            $usuario->setUsuario('usuario'.$i.'@localhost');
//
//            $usuario->setSalt(base_convert(sha1(uniqid(mt_rand(), true)), 16, 36));
////            $passwordEnClaro = 'usuario' . $i;
////            $encoder = $this->container->get('security.encoder_factory')->getEncoder($usuario);
////            $passwordCodificado = $encoder->encodePassword($passwordEnClaro, $usuario->getSalt());
////            $usuario->setPassword($passwordCodificado);
//            $usuario->setPassword("123456");
//
//            $usuario->setFechaAlta(new \DateTime('now - ' . rand(1, 150) . ' days'));
//            $usuario->setEstado("TRUE");
//            $manager->persist($usuario);
//        }
        $manager->flush();
    }

    /**
     * Generador aleatorio de nombres de personas.
     * Aproximadamente genera un 50% de hombres y un 50% de mujeres.
     *
     * @return string Nombre aleatorio generado para el usuario.
     */
    private function getNombre() {
        // Los nombres más populares en España según el INE
        // Fuente: http://www.ine.es/daco/daco42/nombyapel/nombyapel.htm

        $hombres = array(
            'Antonio', 'José', 'Manuel', 'Francisco', 'Juan', 'David',
            'José Antonio', 'José Luis', 'Jesús', 'Javier', 'Francisco Javier',
            'Carlos', 'Daniel', 'Miguel', 'Rafael', 'Pedro', 'José Manuel',
            'Ángel', 'Alejandro', 'Miguel Ángel', 'José María', 'Fernando',
            'Luis', 'Sergio', 'Pablo', 'Jorge', 'Alberto'
        );
        $mujeres = array(
            'María Carmen', 'María', 'Carmen', 'Josefa', 'Isabel', 'Ana María',
            'María Dolores', 'María Pilar', 'María Teresa', 'Ana', 'Francisca',
            'Laura', 'Antonia', 'Dolores', 'María Angeles', 'Cristina', 'Marta',
            'María José', 'María Isabel', 'Pilar', 'María Luisa', 'Concepción',
            'Lucía', 'Mercedes', 'Manuela', 'Elena', 'Rosa María'
        );

        if (rand() % 2) {
            return $hombres[array_rand($hombres)];
        } else {
            return $mujeres[array_rand($mujeres)];
        }
    }

    /**
     * Generador aleatorio de apellidos de personas.
     *
     * @return string Apellido aleatorio generado para el usuario.
     */
    private function getApellidos() {
        // Los apellidos más populares en España según el INE
        // Fuente: http://www.ine.es/daco/daco42/nombyapel/nombyapel.htm

        $apellidos = array(
            'García', 'González', 'Rodríguez', 'Fernández', 'López', 'Martínez',
            'Sánchez', 'Pérez', 'Gómez', 'Martín', 'Jiménez', 'Ruiz',
            'Hernández', 'Díaz', 'Moreno', 'Álvarez', 'Muñoz', 'Romero',
            'Alonso', 'Gutiérrez', 'Navarro', 'Torres', 'Domínguez', 'Vázquez',
            'Ramos', 'Gil', 'Ramírez', 'Serrano', 'Blanco', 'Suárez', 'Molina',
            'Morales', 'Ortega', 'Delgado', 'Castro', 'Ortíz', 'Rubio', 'Marín',
            'Sanz', 'Iglesias', 'Nuñez', 'Medina', 'Garrido'
        );

        return $apellidos[array_rand($apellidos)] . ' ' . $apellidos[array_rand($apellidos)];
    }

}

